/*
** WavWriter.java
**
** Copyright (c) 2011 Peter McQuillan
**
** All Rights Reserved.
**
** Distributed under the BSD Software License (see license.txt)
**
*/
package com.beatofthedrum.alacdecoder;
public class WavWriter
{
static void write_uint32(java.io.FileOutputStream f, int v)
{
byte[] outputBytes = new byte[4];
outputBytes[3] = (byte) (v >>> 24);
outputBytes[2] = (byte) (v >>> 16);
outputBytes[1] = (byte) (v >>> 8);
outputBytes[0] = (byte) (v);
try
{
f.write(outputBytes, 0, 4 );
}
catch(java.io.IOException ioe)
{
}
}
static void write_uint16(java.io.FileOutputStream f, int v)
{
byte[] outputBytes = new byte[2];
outputBytes[1] = (byte) (v >>> 8);
outputBytes[0] = (byte) (v);
try
{
f.write(outputBytes, 0, 2 );
}
catch(java.io.IOException ioe)
{
}
}
public static void wavwriter_writeheaders(java.io.FileOutputStream f, int datasize, int numchannels, int samplerate, int bytespersample, int bitspersample)
{
byte[] buffAsBytes = new byte[4];
/* write RIFF header */
buffAsBytes[0]=82;
buffAsBytes[1]=73;
buffAsBytes[2]=70;
buffAsBytes[3]=70; // "RIFF" ascii values
try
{
f.write(buffAsBytes, 0, 4 );
}
catch(java.io.IOException ioe)
{
}
write_uint32(f, (36 + datasize));
buffAsBytes[0]=87;
buffAsBytes[1]=65;
buffAsBytes[2]=86;
buffAsBytes[3]=69; // "WAVE" ascii values
try
{
f.write(buffAsBytes, 0, 4 );
}
catch(java.io.IOException ioe)
{
}
/* write fmt header */
buffAsBytes[0]=102;
buffAsBytes[1]=109;
buffAsBytes[2]=116;
buffAsBytes[3]=32; // "fmt " ascii values
try
{
f.write(buffAsBytes, 0, 4 );
}
catch(java.io.IOException ioe)
{
}
write_uint32(f, 16);
write_uint16(f, 1); // PCM data
write_uint16(f, numchannels);
write_uint32(f, samplerate);
write_uint32(f, (samplerate * numchannels * bytespersample)); // byterate
write_uint16(f, (numchannels * bytespersample ));
write_uint16(f, bitspersample);
/* write data header */
buffAsBytes[0]=100;
buffAsBytes[1]=97;
buffAsBytes[2]=116;
buffAsBytes[3]=97; // "data" ascii values
try
{
f.write(buffAsBytes, 0, 4 );
}
catch(java.io.IOException ioe)
{
}
write_uint32(f, datasize);
}
}